شرح دورة Swift من الصفر إلى الاحتراف

Swift هي لغة برمجة حديثة وقوية طورتها Apple لتطوير تطبيقات iOS وmacOS. هذه الدورة مصممة لتأخذك من الصفر إلى الاحتراف، حيث تبدأ بالأساسيات مثل المتغيرات والدوال، وتنتهي بمفاهيم متقدمة مثل البرمجة المتزامنة وSwiftUI، مع أمثلة عملية لكل خطوة.

الدرس الأول: مقدمة وتثبيت Swift

Swift هي لغة برمجة مفتوحة المصدر طورتها Apple في 2014، وهي بديل حديث لـ Objective-C.

شرح مفصل:
  • تثبيت Xcode: بيئة التطوير الرسمية لـ Swift، متوفرة على macOS.
  • Swift CLI: تثبيت Swift عبر سطر الأوامر للعمل خارج Xcode.
  • Playgrounds: بيئة تفاعلية لتجربة الكود.
مثال:
print("مرحبًا بك في Swift!")

الدرس الثاني: المتغيرات والثوابت

Swift يستخدم var للمتغيرات وlet للثوابت مع نظام أنواع قوي.

شرح مفصل:
  • var: للقيم القابلة للتغيير.
  • let: للقيم الثابتة.
  • Type Inference: Swift يستنتج النوع تلقائيًا.
مثال:
var name = "علي" // متغير name = "أحمد" let age = 25 // ثابت print(name, age)

الدرس الثالث: أنواع البيانات

Swift يوفر أنواع بيانات قوية وآمنة.

شرح مفصل:
  • Int, Double, Float: للأرقام.
  • String: للنصوص.
  • Bool: للقيم المنطقية (true/false).
مثال:
let count: Int = 10 let height: Double = 1.75 let message: String = "مرحبًا" let isActive: Bool = true print(count, height, message, isActive)

الدرس الرابع: الجمل الشرطية والحلقات

التحكم في تدفق البرنامج باستخدام الشروط والتكرار.

شرح مفصل:
  • if-else: لاتخاذ القرارات.
  • for-in: للتكرار على مجموعات.
  • while: للتكرار بناءً على شرط.
مثال:
let score = 85 if score >= 90 { print("ممتاز") } else { print("جيد") } for i in 1...3 { print("رقم: \(i)") }

الدرس الخامس: الدوال

الدوال تُستخدم لتنظيم الكود وإعادة استخدامه.

شرح مفصل:
  • تعريف: باستخدام func.
  • المعاملات: يمكن إضافة أسماء خارجية وداخلية.
  • الإرجاع: تحديد نوع القيمة المرجعة.
مثال:
func greet(person name: String) -> String { return "مرحبًا، \(name)!" } let greeting = greet(person: "علي") print(greeting)

الدرس السادس: المجموعات (Collections)

Swift يوفر أنواعًا متعددة لتخزين البيانات.

شرح مفصل:
  • Array: قائمة مرتبة.
  • Dictionary: مفاتيح وقيم.
  • Set: مجموعة فريدة غير مرتبة.
مثال:
var fruits = ["تفاح", "موز"] var person = ["name": "علي", "age": "25"] var numbers: Set = [1, 2, 3, 3] print(fruits[0], person["name"]!, numbers)

الدرس السابع: الاختيارات (Optionals)

الاختيارات تتعامل مع القيم التي قد تكون غائبة.

شرح مفصل:
  • التعريف: باستخدام ?.
  • الفك: ! لفرض القيمة أو if let للفحص الآمن.
مثال:
var optionalName: String? = "علي" if let name = optionalName { print("الاسم: \(name)") } else { print("لا يوجد اسم") }

الدرس الثامن: التعامل مع الأخطاء

Swift يستخدم نظامًا قويًا لإدارة الأخطاء.

شرح مفصل:
  • throw: لإلقاء خطأ.
  • do-catch: لمعالجة الأخطاء.
  • try?: لتحويل النتيجة إلى اختياري.
مثال:
enum MathError: Error { case divisionByZero } func divide(_ a: Int, by b: Int) throws -> Int { if b == 0 { throw MathError.divisionByZero } return a / b } do { let result = try divide(10, by: 0) print(result) } catch { print("خطأ: \(error)") }

الدرس التاسع: الكلاسات والهياكل

Swift يوفر طريقتين للبرمجة الكائنية.

شرح مفصل:
  • Class: نوع مرجعي مع وراثة.
  • Struct: نوع قيمي بدون وراثة.
  • الفرق: الكلاسات تُمرر بالمرجع، الهياكل تُنسخ.
مثال:
struct Point { var x = 0, y = 0 } class Car { var brand = "Toyota" } var point = Point(x: 5, y: 10) let car = Car() car.brand = "Honda" print(point.x, car.brand)

الدرس العاشر: البروتوكولات

البروتوكولات تُحدد متطلبات للكلاسات أو الهياكل.

شرح مفصل:
  • التعريف: باستخدام protocol.
  • التطبيق: باستخدام :.
  • الامتداد: إضافة وظائف افتراضية.
مثال:
protocol Describable { func describe() -> String } struct Book: Describable { var title: String func describe() -> String { return "كتاب: \(title)" } } let book = Book(title: "Swift") print(book.describe())

الدرس الحادي عشر: الإغلاقات (Closures)

الإغلاقات هي كتل كود مستقلة يمكن تمريرها.

شرح مفصل:
  • التعريف: باستخدام {}.
  • الاستخدام: كبديل للدوال المجهولة.
  • التقاط: الوصول للمتغيرات الخارجية.
مثال:
let sayHello = { (name: String) in print("مرحبًا، \(name)!") } sayHello("علي")

الدرس الثاني عشر: البرمجة المتزامنة

Swift يدعم التعامل مع المهام المتعددة بأمان.

شرح مفصل:
  • DispatchQueue: لإدارة الخيوط.
  • async/await: بنية حديثة للتعامل المتزامن.
مثال:
func fetchData() async -> String { return "بيانات" } Task { let data = await fetchData() print(data) }

الدرس الثالث عشر: SwiftUI

SwiftUI هو إطار عمل حديث لبناء واجهات المستخدم.

شرح مفصل:
  • الأساس: بناء واجهات تفاعلية باستخدام Swift.
  • View: الكتل الأساسية للواجهة.
  • State: إدارة التغييرات.
مثال:
import SwiftUI struct ContentView: View { @State private var counter = 0 var body: some View { VStack { Text("العدد: \(counter)") Button("زيادة") { counter += 1 } } } }

الدرس الرابع عشر: مشروع عملي - تطبيق قائمة مهام

تطبيق عملي يجمع المفاهيم السابقة.

شرح مفصل:
  • الهدف: إنشاء تطبيق بسيط لإدارة المهام باستخدام SwiftUI.
مثال:
import SwiftUI struct Task: Identifiable { let id = UUID() var title: String var isCompleted = false } struct ContentView: View { @State private var tasks = [Task]() var body: some View { NavigationView { List { ForEach(tasks) { task in Text(task.title) } } .navigationTitle("المهام") .toolbar { Button("إضافة") { tasks.append(Task(title: "مهمة جديدة")) } } } } }